#ifndef POINT3D_H_
#define POINT3D_H_

#pragma once

#include "Vector3d.h"

namespace Geometry
  {
  class Point3d
    {
    public:
      Point3d();
      Point3d(double i_x, double i_y, double i_z);

      double operator[] (size_t i_index) const;

      Point3d& operator+=(const Vector3d& i_vector);

    private:
      double m_x;
      double m_y;
      double m_z;
    };

  bool operator == (const Point3d& i_left, const Point3d& i_right);

  Point3d operator + (Point3d i_point, const Vector3d& i_vector);

  Vector3d operator -(const Point3d& i_left, const Point3d& i_right);

  double determinant(const Point3d& i_pt_1, const Point3d& i_pt_2, const Point3d& i_pt_3);

  }

#endif